#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QTimer>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //把背景颜色设置成黑色
    this->setStyleSheet("background-color: black");

    //初始化计时器
    timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, [=](){
        //刷新界面 定时触发重新绘制界面
        update();

        //每次循环起始度数+/-30
        startAngle += 30;
        if(startAngle >= 360)
        {
            startAngle = 0;
        }
    });

    //启动定时器，间隔100毫秒触发一次
    timer->setInterval(50);
    timer->start();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    //抗锯齿
    painter.setRenderHint(QPainter::Antialiasing, true);

    //平移坐标轴到窗口正中间
    painter.translate(rect().center());

    //最小圆的半径
    int minr = height() / 2 / 7;

    //设置画笔
    painter.setPen(QPen(Qt::green, 4));//参数分别是画笔颜色和粗度

    //画同心圆
    for (int i = 1; i <= 7; i++)
    {
        painter.drawEllipse(QPoint(0, 0), minr * i, minr * i);//参数分别是圆心坐标，X轴半径，Y轴半径
    }

    //画横轴和纵轴
    painter.drawLine(-minr * 7, 0, minr * 7, 0);//第一个点的横纵坐标和第二个点的横纵坐标
    painter.drawLine(0, -minr * 7, 0, minr * 7);//注意：坐标已经移动到窗口的中心了

    //设置锥型渐变 第一个参数是渐变的圆心坐标， 第二个参数是起始的角度（相对于X轴）
    QConicalGradient conGradient(QPoint(0, 0), -startAngle);//加负号表示反方向加角度，即顺时针
    conGradient.setColorAt(0, QColor(0, 255, 0, 200));//第一个参数为相对于初始角度的系数，越大离初始角度越远
    conGradient.setColorAt(0.1, QColor(0, 255, 0, 100));//QColor第四个参数为阴影度，越大颜色越深
    conGradient.setColorAt(0.2, QColor(0, 255, 0, 0));
    conGradient.setColorAt(1, QColor(0, 255, 0, 0));
    //把渐变设置进画刷中
    painter.setBrush(conGradient);

    //设置扇形的边界消失
    painter.setPen(Qt::NoPen);

    //画扇形 需要在规定矩形边界里画扇形，第一个参数是矩形的左上角坐标以及长和宽
    //第二个参数是起始角度（相对于X轴），第三个参数是扇形的弧度 记得所有度数都要乘以16!!!
    painter.drawPie(QRect(-minr * 7, -minr * 7, minr * 14, minr * 14), -startAngle * 16, 70 * 16);


}

